\select@language {italian}
\contentsline {chapter}{Introduzione}{1}
\contentsline {chapter}{\numberline {1}Tecnologie e applicazioni}{5}
\contentsline {section}{\numberline {1.1}Eclipse Rich Client Platform}{6}
\contentsline {subsection}{\numberline {1.1.1}Equinox OSGi}{7}
\contentsline {subsubsection}{Bundle}{8}
\contentsline {subsubsection}{Life Cycle}{10}
\contentsline {subsection}{\numberline {1.1.2}Standard Widget Toolkit}{11}
\contentsline {subsubsection}{JFace}{12}
\contentsline {subsection}{\numberline {1.1.3}Rich Client Platform}{13}
\contentsline {subsubsection}{I plugin}{13}
\contentsline {subsubsection}{Extension ed Extension Point}{14}
\contentsline {subsubsection}{Perspectives, Views ed Editor}{15}
\contentsline {section}{\numberline {1.2}Eclipse Modeling Framework}{15}
\contentsline {section}{\numberline {1.3}ZeroC ICE}{16}
\contentsline {section}{\numberline {1.4}ATS Platform}{17}
\contentsline {subsection}{\numberline {1.4.1}Motivazioni}{18}
\contentsline {subsection}{\numberline {1.4.2}Storia}{18}
\contentsline {subsection}{\numberline {1.4.3}ATS 2}{18}
\contentsline {subsubsection}{ATS Workbench}{21}
\contentsline {subsubsection}{ATS Service}{21}
\contentsline {chapter}{\numberline {2}Specifica dei requisiti del software}{23}
\contentsline {section}{\numberline {2.1}Introduzione}{24}
\contentsline {subsection}{\numberline {2.1.1}Obiettivo}{24}
\contentsline {subsection}{\numberline {2.1.2}Campo d'applicazione}{24}
\contentsline {subsection}{\numberline {2.1.3}Definizioni ed acronimi}{24}
\contentsline {subsection}{\numberline {2.1.4}Fonti}{25}
\contentsline {section}{\numberline {2.2}Descrizione generale}{25}
\contentsline {subsection}{\numberline {2.2.1}Inquadramento}{25}
\contentsline {subsection}{\numberline {2.2.2}Funzioni principali}{25}
\contentsline {subsection}{\numberline {2.2.3}Caratteristiche degli utenti}{26}
\contentsline {subsection}{\numberline {2.2.4}Assunzioni e dipendenze}{27}
\contentsline {section}{\numberline {2.3}Specifiche dei requisiti}{27}
\contentsline {subsection}{\numberline {2.3.1}Requisiti di interfaccia esterna}{27}
\contentsline {subsubsection}{Interfaccia sistema/utente}{27}
\contentsline {subsubsection}{Interfaccia hardware}{27}
\contentsline {subsubsection}{Interfaccia software}{28}
\contentsline {subsection}{\numberline {2.3.2}Requisiti funzionali}{28}
\contentsline {subsubsection}{Requisito I: Adattamento di modelli CAD}{28}
\contentsline {subsubsection}{Requisito II: Generazione del codice del modulo di visualizzazione}{29}
\contentsline {subsubsection}{Requisito III: Generazione del codice di gestione dei movimenti}{29}
\contentsline {subsubsection}{Requisito IV: Visualizzazione del modello 3D}{30}
\contentsline {subsubsection}{Requisito V: Caricamento dinamico di modelli 3D}{30}
\contentsline {subsubsection}{Requisito VI: Visualizzazione dinamica di modelli 3D}{31}
\contentsline {subsubsection}{Requisito VII: Visualizzazione dei movimenti della macchina di test}{31}
\contentsline {subsection}{\numberline {2.3.3}Requisiti non funzionali}{32}
\contentsline {subsubsection}{Requisiti prestazionali}{32}
\contentsline {subsubsection}{Vincoli generali di progettazione}{32}
\contentsline {subsubsection}{Estensibilit\`a}{33}
\contentsline {subsubsection}{Portabilit\`a}{33}
\contentsline {chapter}{\numberline {3}Progetto dell'applicazione}{35}
\contentsline {section}{\numberline {3.1}Architettura del sistema}{36}
\contentsline {subsection}{\numberline {3.1.1}Diagramma generale}{36}
\contentsline {subsection}{\numberline {3.1.2}Visualizzazione del sinottico di macchina}{36}
\contentsline {subsection}{\numberline {3.1.3}Adattamento di disegni CAD}{37}
\contentsline {subsection}{\numberline {3.1.4}Sintesi automatica del codice applicazione}{37}
\contentsline {section}{\numberline {3.2}Integrazione di software di terze parti}{38}
\contentsline {subsection}{\numberline {3.2.1}Gestione della grafica 3D}{38}
\contentsline {subsubsection}{Strumenti esaminati}{39}
\contentsline {paragraph}{Ogre}{39}
\contentsline {paragraph}{JMonkey}{39}
\contentsline {subsubsection}{Comparativa}{40}
\contentsline {subsection}{\numberline {3.2.2}Adattamento dei disegni CAD}{41}
\contentsline {subsubsection}{Strumenti esaminati}{41}
\contentsline {paragraph}{Blender}{41}
\contentsline {paragraph}{3D Studio Max}{42}
\contentsline {subsubsection}{Comparativa}{42}
\contentsline {subsection}{\numberline {3.2.3}Analisi del modello 3D esportato}{43}
\contentsline {subsection}{\numberline {3.2.4}Generazione del codice template}{44}
\contentsline {subsubsection}{Strumenti disponibili}{44}
\contentsline {paragraph}{JET - Java Emitter Template}{44}
\contentsline {paragraph}{Xtend2}{44}
\contentsline {subsubsection}{Comparativa}{45}
\contentsline {section}{\numberline {3.3}Sviluppo del software di test}{45}
\contentsline {subsection}{\numberline {3.3.1}Creazione del plugin Eclipse RCP}{45}
\contentsline {subsubsection}{Installazione della platform}{45}
\contentsline {subsubsection}{Dipendenze}{46}
\contentsline {subsubsection}{Inizializzazione del plugin}{46}
\contentsline {subsubsection}{View.java}{47}
\contentsline {subsubsection}{SynopticApp.java}{49}
\contentsline {subsection}{\numberline {3.3.2}Definizione logica di visualizzazione}{50}
\contentsline {subsubsection}{Caricamento dei modelli}{50}
\contentsline {subsubsection}{Caricamento dello scheletro}{50}
\contentsline {subsubsection}{Luci ed ombre}{52}
\contentsline {subsubsection}{Gestione dei movimenti}{53}
\contentsline {subsubsection}{Input dei movimenti}{55}
\contentsline {subsubsection}{Recupero delle quote assi}{58}
\contentsline {subsubsection}{Aggiunta di nuovi oggetti}{62}
\contentsline {subsubsection}{Inserimento in ATS Workbench}{64}
\contentsline {subsection}{\numberline {3.3.3}Analisi prestazionale}{65}
\contentsline {chapter}{\numberline {4}Sviluppo dell'applicazione}{69}
\contentsline {section}{\numberline {4.1}Adattamento del modello CAD}{70}
\contentsline {subsection}{\numberline {4.1.1}Importazione del modello CAD in Blender}{70}
\contentsline {subsubsection}{Importazione}{70}
\contentsline {subsubsection}{Scaling}{71}
\contentsline {subsection}{\numberline {4.1.2}Armatura e animazioni in Blender}{71}
\contentsline {subsubsection}{Creazione di una nuova armatura}{72}
\contentsline {subsubsection}{Rinomina delle ossa}{72}
\contentsline {subsubsection}{Assegnazione della mesh}{72}
\contentsline {subsubsection}{Animazioni}{73}
\contentsline {subsubsection}{Rinomina dell'animazione}{73}
\contentsline {subsection}{\numberline {4.1.3}Materiali e texturing}{74}
\contentsline {subsubsection}{Materiali}{74}
\contentsline {subsubsection}{Importazione dei materiali}{74}
\contentsline {subsubsection}{Texturing}{74}
\contentsline {subsubsection}{Texture procedurali}{74}
\contentsline {subsubsection}{Texture definite dall'utente}{75}
\contentsline {subsection}{\numberline {4.1.4}Creazione della scena ed esportazione}{76}
\contentsline {subsubsection}{Importazione di altri modelli}{76}
\contentsline {subsubsection}{Esportazione della scena}{76}
\contentsline {paragraph}{Note sull'esportazione}{77}
\contentsline {paragraph}{}{78}
\contentsline {subsubsection}{Modifica del file skeleton.xml}{78}
\contentsline {section}{\numberline {4.2}Plugin di analisi del modello 3D}{78}
\contentsline {subsection}{\numberline {4.2.1}Sorgenti dei dati}{78}
\contentsline {subsection}{\numberline {4.2.2}Importazione del modello}{79}
\contentsline {subsubsection}{Creazione del file genmodel}{79}
\contentsline {subsubsection}{Creazione dei file del modello}{80}
\contentsline {subsubsection}{Modifica dei file del modello}{80}
\contentsline {paragraph}{}{81}
\contentsline {paragraph}{}{81}
\contentsline {section}{\numberline {4.3}Plugin di generazione del codice}{81}
\contentsline {subsection}{\numberline {4.3.1}Raccolta degli input}{82}
\contentsline {subsubsection}{Struttura di passaggio dei dati}{84}
\contentsline {subsection}{\numberline {4.3.2}Generalizzazione del codice}{85}
\contentsline {subsubsection}{Activator.java}{85}
\contentsline {subsubsection}{View.java}{86}
\contentsline {subsubsection}{SynopticApp.java}{86}
\contentsline {paragraph}{}{88}
\contentsline {paragraph}{}{88}
\contentsline {paragraph}{}{89}
\contentsline {paragraph}{}{90}
\contentsline {paragraph}{}{92}
\contentsline {paragraph}{}{92}
\contentsline {paragraph}{}{93}
\contentsline {paragraph}{}{94}
\contentsline {subsubsection}{plugin.xml}{94}
\contentsline {subsubsection}{Extension Point Scheme Definition}{95}
\contentsline {subsubsection}{MANIFEST.MF}{96}
\contentsline {subsubsection}{INode, ITraslate, IRotate}{97}
\contentsline {subsection}{\numberline {4.3.3}Sintesi del codice}{97}
\contentsline {subsubsection}{Generazione di un nuovo progetto}{98}
\contentsline {subsubsection}{Generazione di file da template}{98}
\contentsline {subsubsection}{Copia dei modelli 3D selezionati nel progetto creato}{98}
\contentsline {section}{\numberline {4.4}Esportazione}{98}
\contentsline {subsection}{\numberline {4.4.1}Definizione di una feature}{99}
\contentsline {subsection}{\numberline {4.4.2}Creazione dell'update site}{99}
\contentsline {subsection}{\numberline {4.4.3}Procedura di installazione}{99}
\contentsline {chapter}{Conclusioni}{101}
